//=======================================Copyright(c)===========================================
// 								  深圳易马达科技有限公司
//---------------------------------------文件信息----------------------------------------------
//文件名		: Comm.h
//创建人		: Handry
//创建日期	:
//描述	    : 通信头文件
//-----------------------------------------------当前版本修订----------------------------------
//修改人		:
//版本	    :
//修改日期	:
//描述	    :
//=============================================================================================
#ifndef __COMM_H
#define __COMM_H

//=============================================================================================
//头文件
//=============================================================================================
#include "BSPTypeDef.h"
#include "stm32g0xx_hal.h"
#define     GET_TICKS()    		HAL_GetTick()
#define     TIMEOUTMS(x)    (x * 1)//(x*32768/1000)         //实际超时时间计算
#define     TIMEPASS(st)    ((GET_TICKS() - st)&0xffffff)     //检查是否超时
//=============================================================================================
//数据结构定义
//=============================================================================================

//=============================================================================================
//宏参数设定
//=============================================================================================
#define 	COMM_CRC_A 		1
#define 	COMM_CRC_B 		2

//=============================================================================================
//声明变量，供外部使用
//=============================================================================================

//=============================================================================================
//声明接口函数
//=============================================================================================

//=============================================================================================
//函数名称	: u16 CommCalcCRC(int CRCType,u8 *Data, u16 Length,u8 *TransmitFirst, u8 *TransmitSecond)
//输入参数	: CRCType：CRC计算类型；Data：数组指针；Length：计算的长度；TransmitFirst：CRC低字节；TransmitSecond：CRC高字节
//输出参数	: CRC:计算的CRC
//函数功能	: NFC通信计算CRC
//注意事项	:
//=============================================================================================
u16 CommCalcCRC(int CRCType,u8 *Data, u16 Length,u8 *TransmitFirst, u8 *TransmitSecond);

//=============================================================================================
//函数名称	: u8 CommCheckCRCA(u8 *msg, u8 cnt)
//输入参数	: msg：比较的数据指针；cnt：比较的数据的长度
//输出参数	: TRUE：CRC正确；FALSE：CRC错误
//函数功能	: NFC通信检测CRC A方式是否正确
//注意事项	:
//=============================================================================================
u8 CommCheckCRCA(u8 *msg, u8 cnt);

//=============================================================================================
//函数名称	: void StringCopy(u8 *dest, const u8 *sour, u16 cnt);
//输入参数	: dest：目标字符串地址； *sour：源字符串地址；cnt：复制的长度
//输出参数	:
//函数功能	: 字符串复制
//注意事项	:
//=============================================================================================
void StringCopy(u8 *dest, const u8 *sour, u16 cnt);

//=============================================================================================
//函数名称	: void ChangeU32ToChar(u8 * des , u32 dat)
//输入参数	: des：目标字符串地址；dat：源32位数据
//输出参数	:
//函数功能	: 32位数据转化为字符串，用于打印
//注意事项	:
//=============================================================================================
void ChangeU32ToChar(u8 * des , u32 dat);

//=============================================================================================
//函数名称	: void ChangeU8ToCharString(u8 * des , u8 const *dat , u8 num)
//输入参数	: des：目标字符串地址；*dat：源字符串地址；num：转换的长度
//输出参数	:
//函数功能	: 将8位数组数据转化为字符串，用于打印
//注意事项	:
//=============================================================================================
void ChangeU8ToCharString(u8 * des , u8 const *dat , u8 num);

#endif

/*****************************************end of Comm.h*****************************************/
